package com.d4peng.test.utils;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

/**
 * 注解工具类
 *
 * @author d4peng
 * @date 2021-11-26
 */
public class AnnotationUtils {

    /**
     * 判断某个类上是否存在注解
     *
     * @param clz 类信息
     * @param ant 注解的class值
     * @param <A> 注解的类型
     * @return 该注解
     */
    public static <A extends Annotation> A getAnnotationByClz(Class<?> clz, Class<A> ant) {
        if (clz.isAnnotationPresent(ant)) {
            return clz.getAnnotation(ant);
        }
        return null;
    }

    /**
     * 判断某个字段上是否存在某个注解
     *
     * @param field 字段
     * @param ant   注解
     * @param <A>   注解泛型
     * @return 注解信息
     */
    public static <A extends Annotation> A getAnnotationByField(Field field, Class<A> ant) {
        if (field.isAnnotationPresent(ant)) {
            return field.getAnnotation(ant);
        }
        return null;
    }
}
